package com.gxwz.document.core.dao;

import java.io.Serializable;
import java.util.List;

public interface BaseDao<T> {
	 
    /** 
     * 保存或更新。 
     * @param entity
     */ 
	void saveOrUpdate(T entity);
	
	/** 
     * 更新。 
     * @param entity
     */ 
	void update(T entity);
	
	/**
	 * 删除。
	 * @param entity
	 */
	void delete(T entity);
	
	/** 
     * 按照属性(id)条件查找数据。 
     * @param clasz 待查找的实体类 
     * @param id    根据条件id的值匹配实体类的id 
     * @return T 查找到的实体 
     */  
    public <T> T findById(Class<T> tClass, Serializable id); 
    
    /**
     * 查询数据.
     * @param hql
     * @param param
     * @return T 查找到的实体 
     */
    public List<T> find(String hql, Object... param);
    
    
    /**
     * 查询分页数据.
     * @param hql
     * @param param
     * @return T 查找到的实体 
     */
    public List<T> findByPage(String hql,final int START_INDEX, final int PAGE_SIZE, Object...param);
    
	

}
